package day1;

//测试函数式接口
public class TestFunction {
    public static void main(String[] args) {
        //lambda表达式：是jdk1.8的特性，用于描述函数式接口
        //语法：()->{}
        //():表示抽象方法的参数
        //->：就是一个固定的链接符
        //{}:表示抽象方法需要做方法实现部分
        //利用匿名内部类写的接口
        two t = new two() {
            public void a(int a, int b) {

            }
        };
        //利用lambad表达式来实现接口
        two t2 = (a, b) -> {
            System.out.println("呵呵:" + a + "" + b);
        };
        t2.a(100, 200);
        //lambda表达式 如果方法带返回值，而且只有一行代码
        //正好就是方法的返回值{} return都可以省略
        three t3 = (c,d)->{
            String num = c+d;
            int n = Integer.parseInt(num);
            return n;
        };
        three t4 = (c,d)->Integer.parseInt(c+d);
    }
}

//普通接口:有1个以上的抽象方法
interface One {
    public void one();

    public void two();

    public void three(int a, String b);
}

//函数式接口：里面有且只有一个抽象方法
//同时还可以通过@FunctionalInterface标注函数式接口
@FunctionalInterface
interface two {
    public void a(int a, int b);

    public default void b() {

    }
}
interface three{
    public int a(int a,String b);
}